home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-03
/
qbasicpg.zip
/
SHAPES.BAS
< prev
next >
Wrap
BASIC Source File
|
1989-08-31
|
4KB
|
125 lines
' SHAPES.BAS
' This program displays a shape filled with your favorite character.
' declare constants used as arguments to the COLOR statement
CONST CYAN% = 3
CONST WHITE% = 7
' declare subprograms before they are used; subprogram names and
' parameters should match those in the subprograms
DECLARE SUB GetShape (symbol$, choice%)
DECLARE SUB PrintLine (char$)
DECLARE SUB PrintRectangle (char$)
DECLARE SUB PrintTriangle (char$)
CLS
' call GetShape subprogram to get desired character and shape
GetShape character$, shape% ' pass two arguments to GetShape
PRINT
PRINT
COLOR CYAN%
' use CASE statement to call the requested subprogram
SELECT CASE shape%
CASE 1 ' if shape% = 1, display a triangle
PrintTriangle character$
CASE 2 ' if shape% = 2, display a rectangle
PrintRectangle character$
CASE 3 ' if shape% = 3, display a line
PrintLine character$
END SELECT
COLOR WHITE%
END
SUB GetShape (symbol$, choice%)
' The GetShape subprogram prompts the user for a symbol and a shape
' and returns them to the main program in the symbol$ and choice%
' variables.
PRINT "This program prints a collection of characters in the ";
PRINT "shape you specify."
PRINT
INPUT "What character would you like to use: ", symbol$
PRINT
PRINT "What shape would you like to see:"
PRINT
PRINT " 1) Triangle"
PRINT " 2) Rectangle"
PRINT " 3) Line"
PRINT
DO ' prompt the user until choice% is in the right range
INPUT "Shape (1, 2, or 3): ", choice%
LOOP WHILE (choice% < 1) OR (choice% > 3)
END SUB ' subprogram complete--return to the main program
SUB PrintLine (char$)
' The PrintLine subprogram receives an argument from the main
' program and uses it to print a line 30 characters long.
CONST LENGTH% = 30 ' set the length of the line at 30 characters
FOR i% = 1 TO LENGTH% ' display the character 30 times
PRINT char$; ' use semicolon to print them one after another
NEXT i%
PRINT
END SUB
SUB PrintRectangle (char$)
' The PrintRectangle subprogram receives an argument from the main
' program and uses it to print a rectangle 50 characters long by
' 7 characters high.
CONST LENGTH% = 50 ' set length of rectangle at 50 rows
CONST HEIGHT% = 7 ' set height of rectangle at 7 lines
FOR i% = 1 TO HEIGHT% ' for each of the 7 rows in the rectangle,
FOR j% = 1 TO LENGTH% ' display 50 characters one after another
PRINT char$;
NEXT j%
PRINT ' print a carriage return after each row
NEXT i%
END SUB
SUB PrintTriangle (char$)
' The PrintTriangle subprogram receives an argument from the main
' program and uses it to print an equilateral triangle. The Tab
' function moves the cursor to the correct column location.
CONST ROWS% = 10 ' set the number of rows to 10
left% = ROWS% ' use left% to build left side of triangle
right% = ROWS% + 1 ' use right% to build right side of triangle
FOR rowCount% = 1 TO ROWS% ' for each row in the triangle
FOR i% = left% TO ROWS%
PRINT TAB(i%); char$; ' display left side of row
NEXT i%
FOR i% = ROWS% + 1 TO right% - 1 ' display right side of row
PRINT TAB(i%); char$;
NEXT i%
PRINT ' print carriage return at end of row
left% = left% - 1 ' first character in next row will start one
right% = right% + 1 ' space closer to left margin and extend
NEXT rowCount% ' one space closer to the right margin
END SUB